package com.glsc.ngateway.common.xir.domain;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

@Data
@Entity
@Table(name = "XIR_TRD.TTRD_SET_INSTRUCTION")
public class TtrdSetInstruction implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 结算指令序号
     */
    @Id
    @Column(name = "INST_ID", nullable = false)
    private String instId;

    /**
     * 结算日期
     */
    @Column(name = "SETDATE", nullable = false)
    private String setdate;

    /**
     * 结算方式
     */
    @Column(name = "SETTYPE")
    private String settype;

    /**
     * 结算业务类别
     */
    @Column(name = "BIZTYPE", nullable = false)
    private String biztype;

    /**
     * 结算状态 0-待结算 1 - 暂停  2- 撤销 3-结算完成
     */
    @Column(name = "STATE", nullable = false)
    private String state;

    /**
     * 结算指令分类 0－清算指令  1－结算指令  2－资金划拨指令  2－债券核算指令
     */
    @Column(name = "INSTYPE", nullable = false)
    private String instype;

    /**
     * 结算对手
     */
    @Column(name = "PARTYNAME")
    private String partyname;

    /**
     * 结算关联内部交易号
     */
    @Column(name = "INTORDID")
    private String intordid;

    /**
     * 结算允许撤单标记 0-允许 1-不允许
     */
    @Column(name = "WITH_FLAG", nullable = false)
    private String withFlag;

    /**
     * 一级资金账户
     */
    @Column(name = "CASH_EXT_ACCID", nullable = false)
    private String cashExtAccid;

    /**
     * 一级证券账户
     */
    @Column(name = "SECU_EXT_ACCID", nullable = false)
    private String secuExtAccid;

    /**
     * 二级资金账户
     */
    @Column(name = "CASH_ACCID", nullable = false)
    private String cashAccid;

    /**
     * 二级证券账户
     */
    @Column(name = "SECU_ACCID", nullable = false)
    private String secuAccid;

    /**
     * 合约类,作为父金融工具   现券交易类,作为债券本身
     */
    @Column(name = "H_I_CODE", nullable = false)
    private String hICode;

    /**
     * 父金融工具资产类型
     */
    @Column(name = "H_A_TYPE", nullable = false)
    private String hAType;

    /**
     * 父金融工具市场类型
     */
    @Column(name = "H_M_TYPE", nullable = false)
    private String hMType;

    /**
     * 业务审核 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "BIZ_AUDIT", nullable = false)
    private String bizAudit;

    /**
     * 财务审核 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "ACC_AUDIT", nullable = false)
    private String accAudit;

    /**
     * 清算审核 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "SET_AUDIT", nullable = false)
    private String setAudit;

    /**
     * 其他审核1 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "OTHER1_AUDIT", nullable = false)
    private String other1Audit;

    /**
     * 其他审核2 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "OTHER2_AUDIT", nullable = false)
    private String other2Audit;

    /**
     * 其他审核3 0-待审核 1-审核通过  2-审核不通过
     */
    @Column(name = "OTHER3_AUDIT", nullable = false)
    private String other3Audit;

    /**
     * 核算交易员
     */
    @Column(name = "SETTLE_TRADER")
    private String settleTrader;

    /**
     * 核算对手
     */
    @Column(name = "SETTLE_PARTYID")
    private String settlePartyid;

    /**
     * 核算交易组合
     */
    @Column(name = "SETTLE_GRPID")
    private String settleGrpid;

    /**
     * 备注
     */
    @Column(name = "MEMO")
    private String memo;

    /**
     * 簿记状态标志位 XXXX    1位-簿记基本指令 ; 2位-簿记付款确认 ;  3位-簿记收款确认 ; 4位-簿记合同
     */
    @Column(name = "BJ_STATE")
    private String bjState;

    /**
     * 结算完成时间
     */
    @Column(name = "SET_FINISH_TIME")
    private String setFinishTime;

    /**
     * 创建时间
     */
    @Column(name = "CREATE_TIME")
    private Date createTime;

    /**
     * 最后修改人
     */
    @Column(name = "UPDATE_USER")
    private String updateUser;

    @Column(name = "SETDATESORT")
    private String setdatesort;

    /**
     * 结算指令调度接受者
     */
    @Column(name = "DISPATCH_RECV")
    private String dispatchRecv;

    /**
     * 簿记场所
     */
    @Column(name = "BJ_MARKET")
    private String bjMarket;

    /**
     * 理论付息日
     */
    @Column(name = "CAL_DATE")
    private String calDate;

    /**
     * 结算完成实际日期
     */
    @Column(name = "SETDATE_REAL")
    private String setdateReal;

    /**
     * 理论付息日(WEB系统自动产生指令或人工录入指令)
     */
    @Column(name = "IS_THEORY_PAYMENT")
    private String theoryPayment;

    /**
     * 应收付T结算日期(相对于SETDATE的提前应收应付的结算日期。针对普通非T+1交易的结算指令，该字段为空)
     */
    @Column(name = "SETDATE_REC_PAY")
    private String setdateRecPay;

    /**
     * 业务指令标志(0：非业务指令（比如：合并交易产生的指令、拆分执行交易产生的指令等内部账户不明确指令，一般都是对外指令）1：业务指令)
     */
    @Column(name = "BIZ_FLAG")
    private String bizFlag;

    /**
     * 交易执行市场(交易对象上的交易执行市场)
     */
    @Column(name = "EXE_MARKET")
    private String exeMarket;

    /**
     * 簿记通道标志(对于INSTYPE=10的实际结算指令的进一步分类0：无需簿记通道(承销分销首期等无具体簿记操作的指令)1：手工簿记通道(承销到期、兑息兑付等)2：直通式簿记通道(中债登、清算所的分销到期过户、场内远期首末期、现券、买断式回购、质押式回购、银行间托管转出)。)
     */
    @Column(name = "BJ_MARKET_WAY")
    private String bjMarketWay;

    /**
     * 业务标识号(外汇交易中心的下行成交编号)
     */
    @Column(name = "EXTORDID")
    private String extordid;

    /**
     * 本方结算托管账号(清算所一级市场簿记的结算托管账号可能为中债登托管账号)
     */
    @Column(name = "ZZDACCCODE")
    private String zzdacccode;

    /**
     * 本方结算托管账户名称()
     */
    @Column(name = "ZZDACCNAME")
    private String zzdaccname;

    /**
     * 本方担保方式(保证方式：无履约保证： "0";保证金： "1";保证券： "2";)
     */
    @Column(name = "RESERVETYPE")
    private String reservetype;

    /**
     * 对方结算托管账号(对手结算托管账号)
     */
    @Column(name = "PARTY_ZZDACCCODE")
    private String partyZzdacccode;

    /**
     * 对方结算托管账户名称()
     */
    @Column(name = "PARTY_ZZDACCNAME")
    private String partyZzdaccname;

    /**
     * 对方保证方式(保证方式：无履约保证： "0";保证金： "1";保证券： "2";)
     */
    @Column(name = "PARTY_RESERVETYPE")
    private String partyReservetype;

    /**
     * 簿记合同完成时间()
     */
    @Column(name = "BJ_FINISH_TIME")
    private String bjFinishTime;

    /**
     * 客户简称(WEB VARCHAR(50))
     */
    @Column(name = "PARTY_SHORTNAME")
    private String partyShortname;

    /**
     * 客户编号(WEB)
     */
    @Column(name = "PARTYCODE")
    private String partycode;

    /**
     * 结算详情描述
     */
    @Column(name = "DESC_DB")
    private String descDb;

    /**
     * 备注1 存放同业为提前支取利率
     */
    @Column(name = "B1")
    private String b1;

    /**
     * 备注2 存放同业为逾期支取利率
     */
    @Column(name = "B2")
    private String b2;

    /**
     * 净额清算状态:0,未确认，1合规等待，2非法，3轧差状态
     */
    @Column(name = "NDVP_STATE")
    private String ndvpState;

    /**
     * 划款序号
     */
    @Column(name = "SIMULATE_PAYNUMBER")
    private String simulatePaynumber;

    /**
     * 关联内部交易号
     */
    @Column(name = "SIMULATE_DVP_INTORDID")
    private String simulateDvpIntordid;

    /**
     * 结算指令调度接受者
     */
    @Column(name = "DISPATCH_RECV_GROUP")
    private String dispatchRecvGroup;

    /**
     * 正回购券为自营券  1：使用融入券 0：使用自营券 默认值为 0
     */
    @Column(name = "IS_SELFBOND")
    private String selfbond;

    /**
     * 分配时间
     */
    @Column(name = "DISPATCH_TIME")
    private String dispatchTime;

    /**
     * 标记颜色
     */
    @Column(name = "DESCRIPTION_COLOR")
    private String descriptionColor;

    /**
     * 财务审批信息
     */
    @Column(name = "ACC_AUDIT_INFO")
    private String accAuditInfo;

    /**
     * 清算审批信息
     */
    @Column(name = "SET_AUDIT_INFO")
    private String setAuditInfo;

    /**
     * 手工指令标志
     */
    @Column(name = "MANUAL_INST")
    private String manualInst;

    /**
     * 虚拟账户
     */
    @Column(name = "VIRTUAL_ACCID")
    private String virtualAccid;

    /**
     * 首创结算状态，1已结算，0未结算，默认为0
     */
    @Column(name = "SC_STATUS")
    private String scStatus;

    /**
     * 是否已导出，1已导出，0未导出，默认为0
     */
    @Column(name = "EXCELEXPORTEDSTATUSDICT")
    private String excelexportedstatusdict;

    /**
     * 结算完成操作人
     */
    @Column(name = "SET_FINISH_USER")
    private String setFinishUser;

    /**
     * 交易确认发送状态，未发送=0，发送中=1，已发送=2，发送失败=-1，交易确认结果发送状态，已发送=3，发送失败=-2
     */
    @Column(name = "CONFIRM_SEND_STATE")
    private String confirmSendState;

    /**
     * 交易确认发送状态描述
     */
    @Column(name = "CONFIRM_SEND_STATE_DESC")
    private String confirmSendStateDesc;

    /**
     * 外汇报文匹配状态 无状态=-1，完全匹配=0，失效=2
     */
    @Column(name = "FX_MATCH_STATE")
    private String fxMatchState;

    /**
     * 业务参考号
     */
    @Column(name = "BUSI_REFERENCE")
    private String busiReference;

    /**
     * 财务收付款打印编号
     */
    @Column(name = "PRINT_CODE")
    private String printCode;

    /**
     * 模拟资金结算状态，待结算=0,撤销=2,结算完成=3,结算完成(待复核)=4
     */
    @Column(name = "SIMULATE_CASH_SATATUS")
    private String simulateCashSatatus;

    /**
     * 生成的交易是否已成交确认
     */
    @Column(name = "IS_REF_TRADE_DEALED")
    private String refTradeDealed;

    /**
     * ufx接口调整标识；第一位 : 0 资金未冻结 , 1 资金冻结 ;第二位 0 资金未调整, 1 资金调整 ;第三位 0 库存未调整,1 库存已调整
     */
    @Column(name = "UFX_ADJUST_STATUS")
    private String ufxAdjustStatus;

    /**
     * ufx接口批次ID
     */
    @Column(name = "UFX_BATCH_ID")
    private String ufxBatchId;

    /**
     * 互联互通标识
     */
    @Column(name = "INTERCONTYPE")
    private String intercontype;

    /**
     * 金额确认时间
     */
    @Column(name = "CONFIRM_TIME")
    private String confirmTime;

    /**
     * 最后修改时间
     */
    @Column(name = "UPDATE_TIME")
    private Date updateTime;

    /**
     * 执行状态
     * 线上测试字段不一致，暂时用不上，先注掉
     */
//    @Column(name = "EXCUTE_FLAG")
//    private String excuteFlag;

}
